package net.qhzw.vip.qiyu.config;


import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
import lombok.extern.slf4j.Slf4j;
import net.qhzw.vip.qiyu.entity.PayConfig;
import net.qhzw.vip.qiyu.service.PayConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;

/**
 * 微信支付Configuration
 */
@Slf4j
@Configuration
public class WxPayConfiguration {


    private static PayConfigService payConfigService;


    @Autowired
    public WxPayConfiguration(PayConfigService payConfigService) {
        this.payConfigService = payConfigService;
    }

    /**
     * 获取WxPayService
     *
     * @param wxPayConfig wxPayConfig.appId、wxPayConfig.subAppId
     * @return
     */
    public static WxPayService getPayService(WxPayConfig wxPayConfig) {
        WxPayService wxPayService = null;
        PayConfig payConfig = payConfigService.getOne(Wrappers.<PayConfig>query().lambda()
                .eq(PayConfig::getStatus, 1));
        if (payConfig != null) {
            wxPayConfig.setAppId(payConfig.getAppId());
            wxPayConfig.setMchId(payConfig.getMchId());
            wxPayConfig.setMchKey(payConfig.getMchKey());
            wxPayConfig.setKeyPath(payConfig.getKeyPath());
            wxPayConfig.setPrivateKeyPath(payConfig.getPrivateKeyPath());
            wxPayConfig.setPrivateCertPath(payConfig.getPrivateCertPath());
            wxPayConfig.setApiV3Key(payConfig.getApiV3Key());
            // 可以指定是否使用沙箱环境
            wxPayConfig.setUseSandboxEnv(false);
            wxPayService = new WxPayServiceImpl();
            wxPayService.setConfig(wxPayConfig);
        } else {
            throw new RuntimeException("请配置收款账号");
        }
        return wxPayService;
    }


}
